home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xml;
-
- import com.extensibility.util.Debug;
- import com.extensibility.xml.dt.DataType;
- import com.extensibility.xml.dt.DataTypeIntf;
- import com.extensibility.xml.dt.Facet;
- import java.util.Enumeration;
- import java.util.Vector;
-
- public class XSDLWriter extends SchemaWriter implements XSDLTags {
- ElemProxy elemProxy = new ElemProxy(this);
- AttrProxy attrProxy = new AttrProxy(this);
- DTProxy dtProxy = new DTProxy(this);
- IPEProxy ipeProxy = new IPEProxy(this);
- NotationProxy notationProxy = new NotationProxy(this);
-
- public XSDLWriter(SchemaIntf var1) {
- super(var1, var1.getURI());
- }
-
- public XSDLWriter(SchemaIntf var1, URI var2) {
- super(var1, var2);
- }
-
- private void writeNameRef(SXE var1, BaseDeclaration var2) {
- Debug.assert(var2 != null, "trying to write a name ref to a decl whose owner is not a basedecl");
- var1.writeAttr("ref", var2.getName());
- }
-
- private void writeElemNameRef(SXE var1, String var2, String var3) {
- ElementDeclaration var4 = super.schema.getNamedElement(var2);
- if (var4 != null) {
- this.writeNameRef(var1, var4);
- if (var3 != null) {
- var1.writeAttr("name", var3);
- }
- } else {
- var1.writeAttr("name", var2);
- }
-
- }
-
- private void writeDatatypeNameRef(SXE var1, BaseDeclaration var2, DataType var3) {
- if (var3 == null) {
- var1.writeAttr("type", "string");
- } else {
- Object var4 = null;
- String var5 = super.schema.getDataTypeSource(var3);
- var1.writeAttr("type", var5);
- }
- }
-
- private void writeXSDComments(SXE var1, Enumeration var2) {
- if (var2 != null) {
- if (var2.hasMoreElements()) {
- var1.writeElem("annotation", -1);
-
- while(var2.hasMoreElements()) {
- Comment var3 = (Comment)var2.nextElement();
- if (var3.getKind() != null && var3.getKind().equals("USAGE")) {
- var1.writeElem("documentation", -1);
- var1.writeText(var3.getComment(true));
- var1.flush("documentation");
- } else {
- var1.writeElem("appInfo", -1);
- var1.writeText(var3.getComment(true));
- var1.flush("appInfo");
- }
- }
-
- var1.flush("annotation");
- }
- }
- }
-
- void writeOccurance(SXE var1, ContentModelTerm var2) {
- if (var2.getOccurance() == '?') {
- var1.writeAttr("minOccurs", "0");
- var1.writeAttr("maxOccurs", "1");
- } else if (var2.getOccurance() != 0) {
- if (var2.getOccurance() == '+') {
- var1.writeAttr("minOccurs", "1");
- var1.writeAttr("maxOccurs", "unbounded");
- } else if (var2.getOccurance() == '*') {
- var1.writeAttr("minOccurs", "0");
- var1.writeAttr("maxOccurs", "unbounded");
- }
- }
-
- }
-
- void writeModel(SXE var1, ContentModelTerm var2, boolean var3) {
- if (var2 instanceof ContentModel && var2.getOwner() instanceof ElementDeclaration) {
- ContentModelTermEnum var7 = var2.getTerms(false);
-
- while(var7.hasMoreElements()) {
- ContentModelTerm var8 = (ContentModelTerm)var7.nextElement();
- this.writeModel(var1, var8, false);
- }
- } else if (!var3 && var2.isOwned() && var2.getOwner() instanceof InternalPEDeclaration) {
- var1.writeElem("group", true);
- this.writeNameRef(var1, var2.getOwner().asDecl());
- } else if (var2.isGroup()) {
- String var4 = var2.getChildConnection() == ',' ? "sequence" : "choice";
- var1.writeElem(var4, -1);
- this.writeOccurance(var1, var2);
- ContentModelTermEnum var5 = var2.getTerms(false);
-
- while(var5.hasMoreElements()) {
- ContentModelTerm var6 = (ContentModelTerm)var5.nextElement();
- this.writeModel(var1, var6, false);
- }
-
- var1.flush(var4);
- } else {
- var1.writeElem("element", true);
- this.writeElemNameRef(var1, var2.getTerm(), var2.getLocalTag());
- this.writeOccurance(var1, var2);
- }
-
- }
-
- public void writeAttrGroup(SXE var1, Enumeration var2, AttrProxy var3, boolean var4) {
- while(var2.hasMoreElements()) {
- AttributeGroupMember var5 = (AttributeGroupMember)var2.nextElement();
- if (var5 instanceof AttributeDeclaration) {
- var3.setDecl((AttributeDeclaration)var5);
- var3.writeType(var1, var4);
- } else if (var5 instanceof AttributeGroup) {
- var1.writeElem("attributeGroup", true);
- this.writeNameRef(var1, var5.getOwner().asDecl());
- } else {
- Debug.assert(false, "unknown member type");
- }
- }
-
- }
-
- private static void writeEnumeration(SXE var0, BaseDeclaration var1) {
- Object var2 = null;
- Object var3 = null;
- Object var4 = null;
- Enumeration var9;
- if (var1 instanceof DataTypeDeclaration) {
- DataType var7 = ((DataTypeDeclaration)var1).getDataType();
- Facet var5 = var7.getFacet(Facet.FACET_ENUM_NAME);
- Vector var6 = (Vector)var5.getValue();
- var9 = var6.elements();
- } else {
- if (!(var1 instanceof AttributeDeclaration)) {
- return;
- }
-
- DataType var8 = ((AttributeDeclaration)var1).getDataType();
- var9 = ((AttributeDeclaration)var1).getChoices(var1.getSchema(), true);
- }
-
- while(var9.hasMoreElements()) {
- String var10 = (String)var9.nextElement();
- var0.writeElem("enumeration", -1);
- var0.writeAttr("value", var10);
- var0.flush("enumeration");
- }
-
- var0.flush("enumeration");
- }
-
- public static void writeDataTypeFacets(SXE var0, BaseDeclaration var1, DataTypeIntf var2) {
- if (var2.hasFacet(Facet.FACET_ENUM_NAME)) {
- writeEnumeration(var0, var1);
- } else {
- String var3 = "value";
- if (var2.hasFacet(Facet.FACET_MIN_NAME)) {
- String var5;
- if (var2.hasFacet(Facet.FACET_MINEX_NAME)) {
- Facet var4 = var2.getFacet(Facet.FACET_MINEX_NAME);
- if (((String)var4.getValue()).equals("true")) {
- var5 = "minExclusive";
- } else {
- var5 = "minInclusive";
- }
- } else {
- var5 = "minInclusive";
- }
-
- var0.writeElem(var5, -1);
- Facet var6 = var2.getFacet(Facet.FACET_MIN_NAME);
- var0.writeAttr(var3, (String)var6.getValue());
- var0.flush(var5);
- }
-
- if (var2.hasFacet(Facet.FACET_MAX_NAME)) {
- Object var17 = null;
- String var18;
- if (var2.hasFacet(Facet.FACET_MAXEX_NAME)) {
- Facet var7 = var2.getFacet(Facet.FACET_MAXEX_NAME);
- if (((String)var7.getValue()).equals("true")) {
- var18 = "maxExclusive";
- } else {
- var18 = "maxInclusive";
- }
- } else {
- var18 = "maxInclusive";
- }
-
- var0.writeElem(var18, -1);
- Facet var8 = var2.getFacet(Facet.FACET_MAX_NAME);
- var0.writeAttr(var3, (String)var8.getValue());
- var0.flush(var18);
- }
-
- if (var2.hasFacet(Facet.FACET_MAXLENGTH_NAME)) {
- var0.writeElem("maxLength", -1);
- Facet var9 = var2.getFacet(Facet.FACET_MAXLENGTH_NAME);
- var0.writeAttr(var3, (String)var9.getValue());
- var0.flush("maxLength");
- }
-
- if (var2.hasFacet(Facet.FACET_DIGITS_NAME)) {
- var0.writeElem("precision", -1);
- Facet var10 = var2.getFacet(Facet.FACET_DIGITS_NAME);
- var0.writeAttr(var3, (String)var10.getValue());
- var0.flush("precision");
- }
-
- if (var2.hasFacet(Facet.FACET_DECIMALS_NAME)) {
- var0.writeElem("scale", -1);
- Facet var11 = var2.getFacet(Facet.FACET_DECIMALS_NAME);
- var0.writeAttr(var3, (String)var11.getValue());
- var0.flush("scale");
- }
-
- if (var2.hasFacet(Facet.FACET_LENGTH_NAME)) {
- var0.writeElem("length", -1);
- Facet var12 = var2.getFacet(Facet.FACET_LENGTH_NAME);
- var0.writeAttr(var3, (String)var12.getValue());
- var0.flush("length");
- }
-
- if (var2.hasFacet(Facet.FACET_MINLENGTH_NAME)) {
- var0.writeElem("minLength", -1);
- Facet var13 = var2.getFacet(Facet.FACET_MINLENGTH_NAME);
- var0.writeAttr(var3, (String)var13.getValue());
- var0.flush("minLength");
- }
-
- if (var2.hasFacet(Facet.FACET_ENCODING_NAME)) {
- var0.writeElem("encoding", -1);
- Facet var14 = var2.getFacet(Facet.FACET_ENCODING_NAME);
- var0.writeAttr(var3, (String)var14.getValue());
- var0.flush("encoding");
- }
-
- if (var2.hasFacet(Facet.FACET_PATTERN_NAME)) {
- var0.writeElem("pattern", -1);
- Facet var15 = var2.getFacet(Facet.FACET_PATTERN_NAME);
- var0.writeAttr(var3, (String)var15.getValue());
- var0.flush("pattern");
- }
-
- if (var2.hasFacet(Facet.FACET_PERIOD_NAME)) {
- var0.writeElem("period", -1);
- Facet var16 = var2.getFacet(Facet.FACET_PERIOD_NAME);
- var0.writeAttr(var3, (String)var16.getValue());
- var0.flush("period");
- }
-
- }
- }
-
- private void writeDataTypeInfo(SXE var1, String var2, BaseDeclaration var3, DataTypeIntf var4, boolean var5) {
- if (var3 instanceof AttributeDeclaration) {
- var1.writeElem("simpleType", -1);
- } else {
- var1.writeElem("simpleType");
- }
-
- if (var2 != null && var2.length() > 0) {
- var1.writeAttr("name", var3.getName());
- }
-
- String var6 = BaseFlavor.getSourceCode(super.schema.getFlavorName(), var4.getBaseType());
- var1.writeAttr("base", var6);
- if (var5 && var3 instanceof DataTypeDeclaration) {
- this.writeXSDComments(var1, var3.getComments());
- }
-
- writeDataTypeFacets(var1, var3, var4);
- var1.flush("simpleType");
- }
-
- protected SchemaWriter.DeclWriterProxyIntf createProxy(ElementDeclaration var1) {
- this.elemProxy.setDecl(var1);
- return this.elemProxy;
- }
-
- protected SchemaWriter.DeclWriterProxyIntf createProxy(AttributeDeclaration var1) {
- this.attrProxy.setDecl(var1);
- return this.attrProxy;
- }
-
- protected SchemaWriter.DeclWriterProxyIntf createProxy(ParameterEntityDeclaration var1) {
- if (var1 instanceof InternalPEDeclaration) {
- this.ipeProxy.setDecl((InternalPEDeclaration)var1);
- return this.ipeProxy;
- } else {
- return super.nopProxy;
- }
- }
-
- protected SchemaWriter.DeclWriterProxyIntf createProxy(NotationDeclaration var1) {
- this.notationProxy.setDecl(var1);
- return this.notationProxy;
- }
-
- protected SchemaWriter.DeclWriterProxyIntf createProxy(DataTypeDeclaration var1) {
- if (this.dtProxy == null) {
- this.dtProxy = new DTProxy(this);
- }
-
- this.dtProxy.setDecl(var1);
- return this.dtProxy;
- }
-
- protected void writeHeader(SXE var1) {
- var1.writeComment("Generated by XML Authority. Conforms to w3c http://www.w3.org/1999/XMLSchema");
- var1.writeElem("schema");
- String var2 = null;
- if (super.schema.getNamespace() != null) {
- var2 = super.schema.getNamespace().toSource();
- }
-
- if (var2 != null && var2.length() > 0) {
- var1.writeAttr("targetNamespace", var2);
- var1.writeLineBreak();
- }
-
- var1.writeAttr("xmlns", "http://www.w3.org/1999/XMLSchema");
- Enumeration var3 = super.schema.getDeclarations(super.schema.getURI(), Class.forName("com.extensibility.xml.NamespaceDeclaration"));
- if (var3.hasMoreElements()) {
- var1.writeLineBreak();
- }
-
- while(var3.hasMoreElements()) {
- NamespaceDeclaration var4 = (NamespaceDeclaration)var3.nextElement();
- if (((BaseDeclaration)var4).getName() != null && var4.getNamespace() != null) {
- String var5 = var4.getNamespace();
- var1.writeAttr(String.valueOf("xmlns:").concat(String.valueOf(((BaseDeclaration)var4).getName())), var5);
- if (var3.hasMoreElements()) {
- var1.writeLineBreak();
- }
- }
- }
-
- }
-
- protected void writeSchemaComments(SXE var1) {
- this.writeXSDComments(var1, super.schema.getComments());
- }
-
- protected void writeNamespaces(SXE var1, Enumeration var2) {
- while(var2.hasMoreElements()) {
- NamespaceDeclaration var3 = (NamespaceDeclaration)var2.nextElement();
- URI var4 = var3.getSchemaLoc();
- URI var5 = super.schema.getNamespace();
- String var6 = var5 != null ? var5.toSource() : "";
- String var7 = var3.getNamespace();
- if (!var6.equals(new URI(var7))) {
- var1.writeElem("import", -1);
- var1.writeAttr("namespace", var7);
- if (var4 != null && var4.toSource().length() > 0) {
- var1.writeAttr("schemaLocation", var4.toSource());
- }
-
- var1.flush("import");
- }
- }
-
- }
-
- protected void writeIncludes(SXE var1, Enumeration var2) {
- while(var2.hasMoreElements()) {
- ExternalSubset var3 = (ExternalSubset)var2.nextElement();
- var1.writeElem("include", -1);
- URI var4 = var3.getSystemURI();
- var1.writeAttr("schemaLocation", var4.toSource());
- var1.flush("include");
- }
-
- }
-
- // $FF: synthetic method
- static void access$2000371(XSDLWriter var0, SXE var1, String var2, BaseDeclaration var3, DataTypeIntf var4, boolean var5) {
- var0.writeDataTypeInfo(var1, var2, var3, var4, var5);
- }
-
- // $FF: synthetic method
- static void access$2000071(XSDLWriter var0, SXE var1, Enumeration var2) {
- var0.writeXSDComments(var1, var2);
- }
-
- // $FF: synthetic method
- static void access$2000171(XSDLWriter var0, SXE var1, BaseDeclaration var2, DataType var3) {
- var0.writeDatatypeNameRef(var1, var2, var3);
- }
-
- // $FF: synthetic method
- static void access$2000271(XSDLWriter var0, SXE var1, String var2, String var3) {
- var0.writeElemNameRef(var1, var2, var3);
- }
- }
-